package test;

public class LetCode_66 {
    public static void main(String[] args) {
        int []num={9,8,7,6,5,4,3,2,1,0};
        int[] ints = plusOne(num);
        printArray(ints);
        System.out.println("---------------------");
        num=new int[]{9,8,7,6,5,4,3,2,1,0};
        int[] ints2 = plusOne2(num);
        printArray(ints2);
    }

    private static void printArray(int[] arr) {
        for (int i : arr) {
            System.out.println(i);
        }
    }

    public static int[] plusOne2(int[] digits) {
        //位数增加
        int count=0;
        for(int i=0;i<digits.length;i++){
            if(digits[i]==9){
                count++;
            }
        }
        if(digits.length==count){
            int[]result=new int[digits.length+1];
            result[0]=1;
            return result;
        }
        //不增加位数
        digits[digits.length-1]+=1;
        int index;
        for(int i=digits.length-1;i>=0;i--){
            index=0;//进位
            if(digits[i]>9){
                index=digits[i]/10;
                digits[i-1]+=index;
                digits[i]=digits[i]%10;
            }
        }

        return digits;

    }
    public static int[] plusOne(int[] digits) {
        int sum=0;
        int index=digits.length-1;
        for(int i=0;i<digits.length;i++){
            int num=(int)(digits[i] * Math.pow(10,index));
            sum+=num;
            index--;
        }
        if((sum+1)%(int)(Math.pow(10,digits.length))==0){
            sum=sum+1;
            int []result=new int[digits.length+1];
            for(int i=result.length-1;i>=0;i--){
                int num=sum%10;
                result[i]=num;
                sum/=10;
            }
            return result;
        }else{
            sum+=1;
            for(int i=digits.length-1;i>=0;i--){
                int num=sum%10;
                digits[i]=num;
                sum/=10;
            }
        }
        return digits;

    }
}
